package com.hk.service;

import java.util.List;

import com.hk.commons.HqlFilter;
import com.hk.commons.entity.Organization;
import com.hk.commons.vo.CheckInfo;

/**
 * 
 <p>
 * Title:IOrganization
 * </p>
 * <p>
 * Description:
 * </p>
 * <p>
 * Company:HK
 * </p>
 * 
 * @author Sam
 * @date 2016年2月17日上午11:04:35
 */
public interface IOrganization {

	public Organization findById(Integer id);

	/**
	 * 保存
	 * 
	 * @param
	 * @return
	 */
	public Integer add(Organization u);

	/**
	 * 删除
	 * 
	 * @param id
	 * @return
	 */
	public Organization delete(Integer id, Long actUserId);


	/**
	 * 删除前检查
	 *
	 * @param id
	 * @return
	 */
	public CheckInfo deleteCheck(Integer id);

	/**
	 * 更新
	 * 
	 * @param
	 */
	public void update(Organization u, Long actUserId);

	/** 分页获取 */
	public List<Organization> find(int pageNum, int pageSize);

	public List<Organization> findByFilter(HqlFilter hqlFilter, int pageNum,
			int pageSize);

	public List<Organization> findByFilter(HqlFilter hqlFilter);

	public List<Organization>  findByUser(Long  userId);

	public Long countByFilter(HqlFilter hqlFilter);

	public List executeListHql(String hql);

	public String getDepNameById(Integer id);

	public String getChannelName(int orgId);

	/**
	 * 根据组织架构的Id 获取统计的code
	 * 
	 * @param id
	 * @return
	 */
	public String getOrgLeaderCodeByOrgId(Integer id);

	/**
	 * 根据组织架构的code 获取统计的code
	 * 
	 * @param
	 * @return
	 */
	public String getLeaderCodeByCode(String code, Integer orgId);

	public String getOrgFileter(Integer channelId);

	/**
	 * 获取部门的组织架构code
	 * 
	 * @param code
	 * @param orgId
	 * @return
	 */
	public String getDepCode(String code, Integer orgId);
	/**
	 * 根据orgId 获取渠道信息
	 *
	 * @param orgId
	 * @return
	 */
	public Integer getChannelById(Integer orgId);
	
	public String getChannelNameByChannel(int channel);

	public CheckInfo check(Organization u);
}
